home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_codeop.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  6KB  |  184 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. '''
  5.    Test cases for codeop.py
  6.    Nick Mathewson
  7. '''
  8. import unittest
  9. from test.test_support import run_unittest, is_jython
  10. from codeop import compile_command, PyCF_DONT_IMPLY_DEDENT
  11. if is_jython:
  12.     import sys
  13.     import cStringIO
  14.     
  15.     def unify_callables(d):
  16.         for n, v in d.items():
  17.             if callable(v):
  18.                 d[n] = callable
  19.                 continue
  20.         
  21.         return d
  22.  
  23.  
  24.  
  25. class CodeopTests(unittest.TestCase):
  26.     
  27.     def assertValid(self, str, symbol = 'single'):
  28.         '''succeed iff str is a valid piece of code'''
  29.         if is_jython:
  30.             code = compile_command(str, '<input>', symbol)
  31.             self.assert_(code)
  32.             if symbol == 'single':
  33.                 d = { }
  34.                 r = { }
  35.                 saved_stdout = sys.stdout
  36.                 sys.stdout = cStringIO.StringIO()
  37.                 
  38.                 try:
  39.                     exec code in d
  40.                     exec compile(str, '<input>', 'single') in r
  41.                 finally:
  42.                     sys.stdout = saved_stdout
  43.  
  44.             elif symbol == 'eval':
  45.                 ctx = {
  46.                     'a': 2 }
  47.                 d = {
  48.                     'value': eval(code, ctx) }
  49.                 r = {
  50.                     'value': eval(str, ctx) }
  51.             
  52.             self.assertEquals(unify_callables(r), unify_callables(d))
  53.         else:
  54.             expected = compile(str, '<input>', symbol, PyCF_DONT_IMPLY_DEDENT)
  55.             self.assertEquals(compile_command(str, '<input>', symbol), expected)
  56.  
  57.     
  58.     def assertIncomplete(self, str, symbol = 'single'):
  59.         '''succeed iff str is the start of a valid piece of code'''
  60.         self.assertEquals(compile_command(str, symbol = symbol), None)
  61.  
  62.     
  63.     def assertInvalid(self, str, symbol = 'single', is_syntax = 1):
  64.         '''succeed iff str is the start of an invalid piece of code'''
  65.         
  66.         try:
  67.             compile_command(str, symbol = symbol)
  68.             self.fail('No exception thrown for invalid code')
  69.         except SyntaxError:
  70.             self.assert_(is_syntax)
  71.         except OverflowError:
  72.             self.assert_(not is_syntax)
  73.  
  74.  
  75.     
  76.     def test_valid(self):
  77.         av = self.assertValid
  78.         if not is_jython:
  79.             self.assertEquals(compile_command(''), compile('pass', '<input>', 'single', PyCF_DONT_IMPLY_DEDENT))
  80.             self.assertEquals(compile_command('\n'), compile('pass', '<input>', 'single', PyCF_DONT_IMPLY_DEDENT))
  81.         else:
  82.             av('')
  83.             av('\n')
  84.         av('a = 1')
  85.         av('\na = 1')
  86.         av('a = 1\n')
  87.         av('a = 1\n\n')
  88.         av('\n\na = 1\n\n')
  89.         av('def x():\n  pass\n')
  90.         av('if 1:\n pass\n')
  91.         av('\n\nif 1: pass\n')
  92.         av('\n\nif 1: pass\n\n')
  93.         av('def x():\n\n pass\n')
  94.         av('def x():\n  pass\n  \n')
  95.         av('def x():\n  pass\n \n')
  96.         av('pass\n')
  97.         av('3**3\n')
  98.         av('if 9==3:\n   pass\nelse:\n   pass\n')
  99.         av('if 1:\n pass\n if 1:\n  pass\n else:\n  pass\n')
  100.         av('#a\n#b\na = 3\n')
  101.         av('#a\n\n   \na=3\n')
  102.         av('a=3\n\n')
  103.         av('a = 9+ \\\n3')
  104.         av('3**3', 'eval')
  105.         av('(lambda z: \n z**3)', 'eval')
  106.         av('9+ \\\n3', 'eval')
  107.         av('9+ \\\n3\n', 'eval')
  108.         av('\n\na**3', 'eval')
  109.         av('\n \na**3', 'eval')
  110.         av('#a\n#b\na**3', 'eval')
  111.  
  112.     
  113.     def test_incomplete(self):
  114.         ai = self.assertIncomplete
  115.         ai('(a **')
  116.         ai('(a,b,')
  117.         ai('(a,b,(')
  118.         ai('(a,b,(')
  119.         ai('a = (')
  120.         ai('a = {')
  121.         ai('b + {')
  122.         ai('if 9==3:\n   pass\nelse:')
  123.         ai('if 9==3:\n   pass\nelse:\n')
  124.         ai('if 9==3:\n   pass\nelse:\n   pass')
  125.         ai('if 1:')
  126.         ai('if 1:\n')
  127.         ai('if 1:\n pass\n if 1:\n  pass\n else:')
  128.         ai('if 1:\n pass\n if 1:\n  pass\n else:\n')
  129.         ai('if 1:\n pass\n if 1:\n  pass\n else:\n  pass')
  130.         ai('def x():')
  131.         ai('def x():\n')
  132.         ai('def x():\n\n')
  133.         ai('def x():\n  pass')
  134.         ai('def x():\n  pass\n ')
  135.         ai('def x():\n  pass\n  ')
  136.         ai('\n\ndef x():\n  pass')
  137.         ai('a = 9+ \\')
  138.         ai("a = 'a\\")
  139.         ai("a = '''xy")
  140.         ai('', 'eval')
  141.         ai('\n', 'eval')
  142.         ai('(', 'eval')
  143.         ai('(\n\n\n', 'eval')
  144.         ai('(9+', 'eval')
  145.         ai('9+ \\', 'eval')
  146.         ai('lambda z: \\', 'eval')
  147.  
  148.     
  149.     def test_invalid(self):
  150.         ai = self.assertInvalid
  151.         ai('a b')
  152.         ai('a @')
  153.         ai('a b @')
  154.         ai('a ** @')
  155.         ai('a = ')
  156.         ai('a = 9 +')
  157.         ai('def x():\n\npass\n')
  158.         ai('\n\n if 1: pass\n\npass')
  159.         ai('a = 9+ \\\n')
  160.         ai("a = 'a\\ ")
  161.         ai("a = 'a\\\n")
  162.         ai('a = 1', 'eval')
  163.         ai('a = (', 'eval')
  164.         ai(']', 'eval')
  165.         ai('())', 'eval')
  166.         ai('[}', 'eval')
  167.         ai('9+', 'eval')
  168.         ai('lambda z:', 'eval')
  169.         ai('a b', 'eval')
  170.  
  171.     
  172.     def test_filename(self):
  173.         self.assertEquals(compile_command('a = 1\n', 'abc').co_filename, compile('a = 1\n', 'abc', 'single').co_filename)
  174.         self.assertNotEquals(compile_command('a = 1\n', 'abc').co_filename, compile('a = 1\n', 'def', 'single').co_filename)
  175.  
  176.  
  177.  
  178. def test_main():
  179.     run_unittest(CodeopTests)
  180.  
  181. if __name__ == '__main__':
  182.     test_main()
  183.  
  184.